Modern computer systems may comprise many interacting entities such as software components, hardware components, files or services for instance. The entities may work together such that an operation of a second entity may depend upon a first entity. Any or all such entities may be modified or replaced from time to time. When an entity is updated to a new version, a check may be made to make sure that the other entities in the system are compatible with the new version of the first entity and it may be determined what changes to other entities would be needed to ensure the system continues to function. The complexity of resolving the version compatibility of the components in large computer systems has become a major challenge for computer system administrators and tools have been developed to assist them.